<!-- 原型 -->
<!-- 每个对象都有__proto__属性Object.create(null除外
每个函数都有prototype原型
由于函数也是对象，所以函数都有这两个属性 -->

<!-- 原型链 -->
<!-- 每个对象的__proto__都指向它构造函数的原型(prototype)
每个函数对象的__proto__都指向Function.prototype -->

<!-- https://juejin.cn/post/7061588533214969892#heading-32
用一句话概括原型和原型链

每个对象都有__proto__属性，该属性都指向它构造函数的原型(prototype)，每个函数都有prototype原型，而函数也是对象，
所以函数都包含这两个属性，且所有函数对象的__proto__都指向Function.prototype

原型链：从实例对象中查找某一属性和方法的时候，如果实例对象本身就有查找的属性和方法，则使用该实例的，如果该实例对象上没有，
则会沿着原型链(实例对象的私有属性__proto__)进行查找，直到Object.prototype.__proto__ = null，如果还没查找到，
则返回undefined

 -->